#ifndef __SIMI2C_H__
#define __SIMI2C_H__

#define ACK 0
#define NACK 1

#define SCL_HIGH HAL_GPIO_WritePin(I2C2_SCL_GPIO_Port, I2C2_SCL_Pin, GPIO_PIN_SET)
#define SCL_LOW HAL_GPIO_WritePin(I2C2_SCL_GPIO_Port, I2C2_SCL_Pin, GPIO_PIN_RESET)
#define SDA_HIGH HAL_GPIO_WritePin(I2C2_SDA_GPIO_Port, I2C2_SDA_Pin, GPIO_PIN_SET)
#define SDA_LOW HAL_GPIO_WritePin(I2C2_SDA_GPIO_Port, I2C2_SDA_Pin, GPIO_PIN_RESET)
#define SDA_READ HAL_GPIO_ReadPin(I2C2_SDA_GPIO_Port, I2C2_SDA_Pin)

void simI2cStart(void);
void simI2cStop(void);
void simI2cAck(void);
void simI2cNack(void);
uint8_t  simI2cwaitAck(void);
void simI2cSendByte(uint8_t byte);
uint8_t simI2cReadByte(void);
void I2c_WriteByte(uint8_t innerAddr, uint8_t byte);
uint8_t I2c_ReadByte(uint8_t innerAddr);
void I2c_WriteBytes(uint8_t innerAddr,uint8_t *buf, uint8_t len);
void I2c_ReadBytes(uint8_t innerAddr,uint8_t *buf, uint8_t len);


#endif
